﻿using ProtoBuf;

namespace Remoting.Reactive.ProtoBuf
{
    [ProtoContract]
    [ProtoInclude(1, typeof(ActivationRequest))]
    [ProtoInclude(2, typeof(InvocationRequest))]
    [ProtoInclude(3, typeof(SubscribeRequest))]
    public abstract class Request : Message, IRequest
    {
        [ProtoMember(1)]
        public string RequestId { get; set; }

        public override MessageKind MessageKind { get { return MessageKind.Request; } }
        public abstract RequestKind RequestKind { get; }
    }
}
